package com.service.inte;

import com.entity.Td_tblpartyorgmembers;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;


public interface MemberServiceInte {

    /**
     * 查询所有用户
     * @return
     */
    public List<Td_tblpartyorgmembers> getAllMember();

    /**
     * 根据党组织查询该组织下的所有用户
     *
     * @param branchId
     * @return
     */
    public List<Td_tblpartyorgmembers> getAllByFd_branchId(int branchId);

    /**
     * 根据党组织查询所有申请
     * @param type 流程(1=申请人员，2=积极分子，3=发展对象，4=预备党员，5=正式党员)
     * @param branchId 党组织id
     * @return
     */
    public List<Td_tblpartyorgmembers> getAllApplyByBranchId(int type,int branchId);

    /**
     * 查询所有申请
     * @param type 流程(1=申请人员，2=积极分子，3=发展对象，4=预备党员，5=正式党员)
     * @return
     */
    public List<Td_tblpartyorgmembers> getAllApply(int type);

    /**
     * 根据党组织查询所有待审批
     * @param type 流程(1=申请人员，2=积极分子，3=发展对象，4=预备党员，5=正式党员)
     * @param branchId 党组织id
     * @return
     */
    public List<Td_tblpartyorgmembers> getApprovalByBranchId(int type,int branchId);

    /**
     * 查询所有待审批
     * @param type 流程(1=申请人员，2=积极分子，3=发展对象，4=预备党员，5=正式党员)
     * @return
     */
    public List<Td_tblpartyorgmembers> getAllApprroval(int type);

    /**
     * 根据姓名查询所有正式党员
     * @param name 姓名
     * @return 0=用户id   1=组织名   2=用户名   3=头像地址
     */
    public List<Object[]> getMemberByName(String name);

    /**
     * 获取所有正式党员
     * @return
     */
    List<Td_tblpartyorgmembers> getAllPartyMember();

    /**
     * 根据用户id查询该党员
     * @param loginId 用户id
     * @return
     */
    Td_tblpartyorgmembers getByLoginId(int loginId);

    /**
     * 根据姓名查询所有正式党员
     * @param Name 姓名
     * @param page 页数
     * @return 0=用户id   1=组织名   2=用户名   3=头像地址
     */
    public List<Object[]> getMemberByName(String Name, int page);

    /**
     * 修改用户所属组织
     * @param branchId 组织id
     * @param branchName 组织名
     * @param loginId 用户id
     */
    int updateBranch(int branchId, String branchName, int loginId);

    /**
     * 查询已经向上提交申请还未审批的所有用户
     * @param type 申请类型(1 申请人员 2 积极分子 3 发展对象 4 预备党员 5 正式党员 )
     * @param name 用户名
     * @param page 页码
     * @return
     */
    List<Object[]> getAllApprroval(int type, String name, int page);

    /**
     * 新建或修改用户表
     * @param td_tblpartyorgmembers
     */
    @Transactional
    void saveOrUpdate(Td_tblpartyorgmembers td_tblpartyorgmembers);

    /**
     * 文件上传
     * @param imgName 文件
     * @param loginId 用户名
     * @return
     */
    String uploadMemberImage(MultipartFile imgName, int loginId);

    /**
     * 修改用户组织迁移模块
     * @param state 状态(0=未迁移，1=正在迁移)
     * @param loginId 用户id
     * @return
     */
    public int updateTransferState(int state,int loginId);

}
